package cl.tinet.trainee.dao;

import java.util.List;

import cl.tinet.trainee.model.CarroTO;
import cl.tinet.trainee.model.DetalleCarroTO;
import cl.tinet.trainee.model.ProductoTO;
import cl.tinet.trainee.model.UsuarioTO;

public interface ProductosDAO {
		
	/**
	 * Metodo encargado de listar todos los productos que tengan stock mayor a 0
	 * @return lista de productos
	 */
	public List<ProductoTO> listarProductos();
	
	/**
	 * metodo enargado de crear un nuevo carro en la base de datos
	 * @param carroTO
	 */
	public void crearCarro(CarroTO carroTO);

	/**
	 * Metodo encargado de cargar el carro que se usara para la compra
	 * @return id del carro
	 */
	public CarroTO cargarCarro();
	
	/**
	 * Metodo encargado de agregar un producto al carro de compras
	 *
	 */
	public boolean agregarProducto(DetalleCarroTO detalleCarroTO);
	
	/**
	 * Metodo encargado de restar en uno el stock del producto
	 * @param productoTO
	 */
	public void descontarStock(ProductoTO productoTO);
	
	/**
	 * Metodo encargado de verificar si el usuario se encuentra registrado en la
	 * base de datos
	 * 
	 * @param usuarioTO
	 * @return objeto del tipo usuarioTO
	 */
	public UsuarioTO identificarUsuario(UsuarioTO usuarioTO);
	
	/**
	 * Metodo encargado de actualizar un detalle
	 * @param detalleCarroTO
	 */
	public void actualizarDetalle(DetalleCarroTO detalleCarroTO);
	
	/**
	 * Metodo encargado de eliminar un detalle de carro
	 */
	public void eliminarDetalle(DetalleCarroTO detalleCarroTO);
	
	/**
	 *  Metodo encargado de obtener un objeto de tipo DetalleCarroTO
	 * @param detalleCarroTO
	 * @return
	 */
	public DetalleCarroTO buscarDetalle(DetalleCarroTO detalleCarroTO);

}
